package com.boyi.cycling_master.ui.base;

import android.os.Bundle;
import android.support.annotation.Nullable;

import com.boyi.cycling_master.main.basemvp.BasePresenter;
import com.boyi.cycling_master.main.basemvp.BaseView;

/**
 *
 * @date 创建时间: 2017/6/21 16:37
 *
 * @author Lee_Mofeel
 *
 * @version 1.0
 *
 * @Description 所有MVP构建模式下的Activity基类
 * 
 */

public abstract class BaseToolBarMVPActivity<V extends BaseView,P extends BasePresenter<V>> extends BaseToolBarActivity {

    // 表示器 业务逻辑控制
    protected P presenter;

    /**
     * 除了执行BaseActivity中的业务 还需要对presenter进行初始化 和视图的绑定
     * 子类需要指定对应的BaseView类型 和 Presenter类型即可
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        presenter = initPresenter();
        presenter.attch((V)this);
        super.onCreate(savedInstanceState);// 这当中initLogic中会进行业务处理等等 考虑在这之前对业务对象进行初始化
    }


    /**
     * 视图的解绑
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.dettch();
    }

    /**
     * 子类通过实现这个方法 得到一个presenter对象
     * @return
     */
    public abstract P initPresenter();
}
